package com.xmut.mall.order.vo;

import com.xmut.mall.order.entity.OrderEntity;
import com.xmut.mall.order.entity.OrderItemEntity;
import com.xmut.mall.order.entity.OrderLogEntity;
import com.xmut.mall.order.entity.ReceiptEntity;
import com.xmut.mall.order.myenum.*;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 订单详情Vo
 */
@Data
@NoArgsConstructor
public class OrderDetailVO {


    private static final long serialVersionUID = -6293102172184734928L;

    /**
     * 订单
     */
    private OrderEntity order;

    /**
     * 子订单信息
     */
    private List<OrderItemEntity> orderItems;

    /**
     * 订单状态
     */
    private String orderStatusValue;

    /**
     * 付款状态
     */
    private String payStatusValue;

    /**
     * 物流状态
     */
    private String deliverStatusValue;

    /**
     * 物流类型
     */
    private String deliveryMethodValue;

    /**
     * 支付类型
     */
    private String paymentMethodValue;

    /**
     * 发票
     */
    private ReceiptEntity receipt;

    /**
     * 获取订单日志
     */
    private List<OrderLogEntity> orderLogs;

    // 价格详情
    private String priceDetail;

    public OrderDetailVO(OrderEntity order, List<OrderItemEntity> orderItems, List<OrderLogEntity> orderLogs, ReceiptEntity receipt) {
        this.order = order;
        this.orderItems = orderItems;
        this.orderLogs = orderLogs;
        this.receipt =  receipt;
    }

    /**
     * 可操作类型
     */
    public AllowOperation getAllowOperationVO() {
        return new AllowOperation(this.order);
    }

//    public String getOrderStatusValue() {
//        try {
//            return OrderStatusEnum.valueOf(order.getOrderStatus()).description();
//        } catch (Exception e) {
//            return "";
//        }
//    }
//
//    public String getPayStatusValue() {
//        try {
//            return PayStatusEnum.valueOf(order.getPayStatus()).description();
//        } catch (Exception e) {
//            return "";
//        }
//
//    }
//
//    public String getDeliverStatusValue() {
//        try {
//            return DeliverStatusEnum.valueOf(order.getDeliverStatus()).getDescription();
//        } catch (Exception e) {
//            return "";
//        }
//    }
//
//    public String getDeliveryMethodValue() {
//        try {
//            return DeliveryMethodEnum.valueOf(order.getDeliveryMethod()).getDescription();
//        } catch (Exception e) {
//            return "";
//        }
//    }
//
//    public String getPaymentMethodValue() {
//        try {
//            return PaymentMethodEnum.valueOf(order.getPaymentMethod()).paymentName();
//        } catch (Exception e) {
//            return "";
//        }
//    }
}
